package com.itheima.d5_tcp2;

import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.util.Scanner;

/*
   目标：完成TCP通信快速入门-客户端开发：实现1发1收。

   注意事项 : !!!!!!!
        1 accept具备阻塞作用 , 监听客户端连接
        2 read和readLine方法都具备阻塞作用
        3 发送一行数据 , 千万不要忘记加上换行符并且刷新
        4 close方法执行会给对方写一个结束标记和刷新
 */
public class Client {
    public static void main(String[] args) throws Exception {
        // 1、创建Socket对象，并同时请求与服务端程序的连接。
        Socket socket = new Socket("127.0.0.1", 10086);
//        // 2 通过socket对象获取网络中的字节输出流
//        OutputStream os = socket.getOutputStream();
//        // 把网络中的字节输出流封装成字符输出流
//        OutputStreamWriter oos = new OutputStreamWriter(os);
//        // 把基本的字符输出流封装高效的字符输出流
//        BufferedWriter bw = new BufferedWriter(oos);

        // 3、把网络中的字节输出流封装成高效的字符输出流
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

        // 4、开始写数据出去了(发送数据)
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("请输入您发送的数据:");
            String s = sc.nextLine();
            // 设置停止条件
            if (s.equals("exit")) {
                // 5、释放连接资源
                bw.close();
                socket.close();
                break;
            }
            bw.write(s);
            bw.newLine();//加上换行符,和上面的字符串组成一行数据
            bw.flush();
        }

        // 发送一个结束标志
        // socket.shutdownOutput();
    }
}
